///////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
#ifndef __MOVER_H__
#define __MOVER_H__

#include <Config.h>
#include <Math/Vec3f.h>

//-----------------------------------------------------------------------------

class Mover
{
private:
	Vec3f 			position;
	Vec3f 			rotation;
	Vec3f 			scale;
	bool			moved;

protected:
	bool			hasMoved ();
	void			setMoved ( bool moved );

public:
					Mover();

	void			setPosition ( float x, float y, float z );
	void			setPosition ( Vec3f trans );
	
	void			setRotation ( float x, float y, float z );
	void			setRotation ( Vec3f rot );
	
	void			setScale ( float x, float y, float z );
	void			setScale ( Vec3f scale );
	
	Vec3f			getPosition ();
	Vec3f			getRotation ();
	Vec3f			getScale ();

	virtual void	moveAlongX ( float dist );
	virtual void	moveAlongY ( float dist );
	virtual void	moveAlongZ ( float dist );
	
	virtual void	rotateAroundX ( float angle );
	virtual void	rotateAroundY ( float angle );
	virtual void	rotateAroundZ ( float angle );
	
	virtual void	moveAlongForward ( float dist );
	virtual void	moveAlongRight ( float dist );
	virtual void	moveAlongUp ( float dist );

	virtual void	rotateAroundForward ( float angle );
	virtual void	rotateAroundRight ( float angle );
	virtual void	rotateAroundUp ( float angle );
};

#endif // __MOVER_H__
//-----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
